/**
 * 除法
 * @param a string|number 被除数
 * @param b string|number 除数  不能0
 * @param fix int >=0 最多保留小数位数
 * @param op int 多出位数处理方式
 * 		0:四舍五入, 1:向上取值, -1:向下取值
 * @param pad boolean 小数位数不足是否补位
 * @return string  '':参数b=0时
 */
$.bcDiv = function(a, b, fix=2, op=0, pad=false){
	function RE0(n){ return new Array(n+1).join('0'); }
	function FMT(v){ return v.replace(/^0+/,''); }
	function DIV(a, b, n, x){
		n++;  if(x+=n) x>0 ? a+=RE0(x) : b+=RE0(-x);  let rtn='0';
		let s=a.length-b.length; if(a.charAt(0)<=b.charAt(0)) s--;
		while(s>0){
			let p=RE0(s);  rtn=$.bcAddInt(rtn,'1'+p);
			a=$.bcSubInt(a,b+p); s=a.length-b.length;
			if(a.charAt(0)<=b.charAt(0)) s--;
		}
		while(a.length>b.length || (a.length===b.length && a>b)){
			rtn=$.bcAddOne(rtn);  a=$.bcSubInt(a,b);
		}
		x=rtn.length;  if(x===n) return '.'+rtn;
		if(x<n) return '.'+RE0(n-x)+rtn;
		return rtn.slice(0,-n)+'.'+rtn.slice(-n);
	}
	$.bcDiv = function(a, b, fix=2, op=0, pad=false){
		let [_a,ai,ad]=$.bcArr(a), [_b,bi,bd]=$.bcArr(b), x;
		if(!ai&&!ad) return fix && pad ? '0.'+RE0(fix) :'0';
		if(!bi&&!bd) return ''; let _=_a!==_b; b=FMT(bi+bd);
		if(b==='1') x = ai + '.' + ad;
		else x = DIV(FMT(ai+ad),b,fix,bd.length-ad.length);
		return $.bcFix((_?'-':'')+x, fix, op, pad);
	};
	return $.bcDiv(a, b, fix, op, pad);
};
